// https://leetcode.cn/problems/backspace-string-compare/

// 题干：给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，
//      如果两者相等，返回 true 。# 代表退格字符。
//      注意：如果对空文本输入退格字符，文本继续为空。

// 示例：输入：s = "ab#c", t = "ad#c"
//      输出：true

// 碎语："#"代表退格，相当于在已有字符上pop一个，联想到栈
//       请注意，栈的结构很简单，一般情况下可以考虑不用容器

#include <bits/stdc++.h>
using namespace std;

class Solution
{
public:
    bool backspaceCompare(string s, string t)
    {
        string _s, _t;

        for (const auto& ch : s){
            if (ch == '#'){
                if (_s.empty()) continue;
                else _s.pop_back();
            }
            else _s.push_back(ch);
        }

        for (const auto& ch : t){
            if (ch == '#'){
                if (_t.empty()) continue;
                else _t.pop_back();
            }
            else _t.push_back(ch);
        }

        return _s == _t;
    }
};

int main()
{
    Solution sol;
    string s = "ab#c", t = "ad#c";

    bool index = sol.backspaceCompare(s, t);
    cout << index << endl;
    
    return 0;
}